package com.locAutoWeb.actions;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.locAutoWeb.objetos.Locatario;
import com.locAutoWeb.util.ConectorDataBase;
import com.opensymphony.xwork2.ActionSupport;
import com.locAutoWeb.objetos.Locatario;
import com.locAutoWeb.objetos.Agencia;
import com.locAutoWeb.objetos.PessoaFisica;

public class CadastrarLocatarioAction extends ActionSupport {

	public static final String PESSOA_FISICA = "PESSOA FISICA";
	public static final String AGENCIA = "AGENCIA";
	// public static final String IMOBILIARIA = "IMOBILIARIA";

	public static final String ALTERARPF = "ALTERARPF";
	public static final String ALTERAR_AGENCIA = "ALTERAR_AGENCIA";
	// public static final String ALTERAR_IMOBILIARIA = "ALTERAR_IMOBILIARIA";

	public List<String> estados = new ArrayList<String>();

	private String tipoLocatario;
	private Locatario locatario;
	private String mensagem;
	private List<String> tipos = new ArrayList<String>();

	public CadastrarLocatarioAction() {
		this.tipos.add(PESSOA_FISICA);
		this.tipos.add(AGENCIA);
		// this.tipos.add(IMOBILIARIA);

		try {
			this.estados = ConectorDataBase.recuperaEstados();
		} catch (Exception e) {
			this.mensagem = e.getMessage();
		}

	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public List<String> getEstados() {
		return estados;
	}

	public void setEstados(List<String> estados) {
		this.estados = estados;
	}

	public String getTipoLocatario() {
		return tipoLocatario;
	}

	public void setTipoLocatario(String tipoLocatario) {
		this.tipoLocatario = tipoLocatario;
	}

	public List<String> getTipos() {
		return tipos;
	}

	public void setTipos(List<String> tipos) {
		this.tipos = tipos;
	}

	public String execute() throws Exception {

		HttpServletRequest req = ServletActionContext.getRequest();
		String acao = req.getParameter("acao");
		if (acao != null && acao.equals("Alterar")) {

			String login = req.getParameter("login");
			String senha = req.getParameter("senha");
			String nome = req.getParameter("nome");
			String tipo = req.getParameter("tipo");

			try {
				this.locatario = ConectorDataBase.recuperaDadosLocatario(login,
						senha, Integer.parseInt(tipo));

				return ALTERARPF;
			} catch (Exception e) {
				// TODO: handle exception
			}
		} else {
			if (this.tipoLocatario != null) {

				if (this.tipoLocatario.equals(PESSOA_FISICA)) {
					this.locatario = new PessoaFisica();
					this.locatario.setTipo(Locatario.TIPO_PESSOA_FISICA);
				} else if (this.tipoLocatario.equals(AGENCIA)) {
					this.locatario = new Agencia();
					this.locatario.setTipo(Locatario.TIPO_AGENCIA);
				}

				switch (this.locatario.getTipo()) {
				case Locatario.TIPO_PESSOA_FISICA:
					return PESSOA_FISICA;
				case Locatario.TIPO_AGENCIA:
					return AGENCIA;
					// case Locatario.TIPO_IMOBILIARIA: return IMOBILIARIA;
				}

			}
		}

		return INPUT;
	}

}
